const express = require('express');
const router = express.Router();
const layerController = require('../../controllers/layerController');
const { validateRequest } = require('../../middleware/validationMiddleware');
const { body, param, query } = require('express-validator');

// 获取图层列表
router.get('/layer/page', 
    [
        query('pageNum').optional().isInt({ min: 1 }).withMessage('pageNum必须为大于0的整数'),
        query('pageSize').optional().isInt({ min: 1, max: 100 }).withMessage('pageSize必须为1-100之间的整数'),
        query('menuId').optional().isInt().withMessage('菜单ID必须为整数'),
        query('layerName').optional().isString(),
        query('layerType').optional().isString(),
        query('status').optional().isIn(['0', '1']).withMessage('状态值只能为0或1')
    ],
    validateRequest,
    layerController.getLayerList);

// 获取图层详情
router.get('/layer/:id', 
    [
        param('id').isInt().withMessage('无效的图层ID')
    ],
    validateRequest,
    layerController.getLayerById);

// 创建图层
router.post('/layer', 
    [
        body('menuId').notEmpty().withMessage('菜单ID不能为空')
            .isInt().withMessage('菜单ID必须为整数'),
        body('layerName').notEmpty().withMessage('图层名称不能为空'),
        body('layerType').notEmpty().withMessage('图层类型不能为空'),
        body('layerUrl').notEmpty().withMessage('图层服务地址不能为空'),
        body('layerStyle').optional().isObject().withMessage('图层样式必须为对象'),
        body('layerParams').optional().isObject().withMessage('图层参数必须为对象'),
        body('isVisible').optional().isIn([0, 1]).withMessage('可见性值只能为0或1'),
        body('orderNum').optional().isInt().withMessage('显示顺序必须为整数'),
        body('status').optional().isIn(['0', '1']).withMessage('状态值只能为0或1')
    ],
    validateRequest,
    layerController.createLayer);

// 更新图层
router.put('/layer/:id', 
    [
        param('id').isInt().withMessage('无效的图层ID'),
        body('menuId').optional().isInt().withMessage('菜单ID必须为整数'),
        body('layerName').optional().notEmpty().withMessage('图层名称不能为空'),
        body('layerType').optional().notEmpty().withMessage('图层类型不能为空'),
        body('layerUrl').optional().notEmpty().withMessage('图层服务地址不能为空'),
        body('layerStyle').optional().isObject().withMessage('图层样式必须为对象'),
        body('layerParams').optional().isObject().withMessage('图层参数必须为对象'),
        body('isVisible').optional().isIn([0, 1]).withMessage('可见性值只能为0或1'),
        body('orderNum').optional().isInt().withMessage('显示顺序必须为整数'),
        body('status').optional().isIn(['0', '1']).withMessage('状态值只能为0或1')
    ],
    validateRequest,
    layerController.updateLayer);

// 删除图层
router.delete('/layer/:id', 
    [
        param('id').isInt().withMessage('无效的图层ID')
    ],
    validateRequest,
    layerController.deleteLayer);

// 获取菜单下的图层列表
router.get('/layer/:menuId', 
    [
        param('menuId').isInt().withMessage('无效的菜单ID')
    ],
    validateRequest,
    layerController.getLayersByMenuId);

module.exports = router;